<template>
  <div class="user-container">
    <!-- 顶部区域6月23 -->
    <div class="info-box">
      <van-image class="my-image" round :src="cangkuuserInfo.photo" />
      <h2 class="name">
        {{ cangkuuserInfo.name }}
        <br />
        <van-tag color="#fff" text-color="#3296fa" type="primary">{{
          cangkuuserInfo.birthday
        }}</van-tag>
      </h2>
    </div>
    <!-- 操作链接布局6月23 -->
    <div>
      <van-row>
        <van-col class="lin1" span="8">
          <van-icon color="#77aaff" name="newspaper-o" dot /><span
            >我的作品</span
          ></van-col
        >
        <van-col class="lin2" span="8"
          ><van-icon color="#ff0000" name="star-o" badge="1314" /><span
            >我的收藏</span
          ></van-col
        >
        <van-col class="lin3" span="8"
          ><van-icon color="#ffaa00" name="tosend" badge="520" /><span
            >阅读历史</span
          ></van-col
        >
      </van-row>
    </div>
    <!-- 底部的区域6月23 -->
    <div class="bottom">
      <van-cell-group>
        <van-cell icon="edit" title="编辑资料" is-link to="/edit" />
        <van-cell icon="chat-o" title="007同学" is-link />
        <van-cell icon="setting-o" title="系统设置" is-link />
        <van-cell icon="warning-o" title="退出登录" is-link @click="logout" />
        <van-cell
          icon="service-o"
          title="客服中心"
          is-link
          @click="tostudent"
          to="/student"
        />
      </van-cell-group>
    </div>
  </div>
</template>

<script>
// 导入api 6月23号----------------------全部都是6月23
// 用 this.$dialog.confim({}) 就不需要导入这个插件(vue官网自带的)
// 引入 Dialog  弹出框 组件后，会自动在 Vue 的 prototype 上挂载 $dialog 方法，
// 在所有组件内部都可以直接调用此方法。this.$dialog.confirm
import { Dialog } from 'vant'
// 导入 api里面的my.js 获取token
// 6月24号改 代用了仓库的cangkuuserInfo数据 这个就不需要了----------------
import { getUserInfo } from '../../api/my.js'
// 导入 token工具函数
import { removeToken } from '../../utils/token.js'
// 6月26号-----------------------6月26号------------
import { mapState } from 'vuex'

export default {
  name: 'my',
  data () {
    return {
      // 用户信息 (6月24号修改)
      // 因为 computed：()里面使用了仓库保存的数据, 所以这里的userInfo:()和created里面的请求都可以不需要了
      // 将数据保存在仓库,是为了减少对服务器的请求, 提高性能(直接通过仓库取到数据渲染到页面即可)
      // userInfo: {}
    }
  },
  created () {
    getUserInfo().then(res => {
      // console.log('res', res)
      // 获取登陆成功后获取的信息
      this.userInfo = res.data.data
    })
  },
  // 6月26号-----------------------6月26号------------
  // 这样的写法是解决代码冗余, 为什么用数组(因为后期可能需要添加多个数据)
  computed: mapState(['cangkuuserInfo']),
  // computed: {
  //   // 6月24号---------------6月24号---------------------------------
  //   // 计算属性 注意return 返回结果的写法,不能直接赋值
  //   // 简化 vuex 中的数据获取
  //   // this 的是仓库的 cangkuuserInfo数据
  //   cangkuuserInfo () {
  //     return this.$store.state.cangkuuserInfo
  //   }
  // },

  methods: {
    tostudent () {},
    logout () {
      // this.$dialog
      //   .confirm({
      //     title: '你真的要退出了吗?嘤嘤嘤',
      //     message: '算你狠!!'
      //   })
      //   .then(() => {
      //     // 确认执行的回调
      //     console.log('then')
      //   })
      //   .catch(() => {
      //     // 取消执行的回调
      //     console.log('catch')
      //   })
      // 下面这种写法需要导入------- import { Dialog } from 'vant';
      Dialog.confirm({
        title: '温馨提示',
        message: '确定要退出吗'
      })
        .then(() => {
          // 确定退出 删除 token
          removeToken()
          // 删除用户信息 ---------------月24号修改
          // 6月24号修改 (因为用了仓库的cangkuuserInfo数据 所以这里也不需要thisuserInfo = {}去删除了)
          // 而是应该删除 仓库中的数据了
          // this.userInfo = {}
          // this.cangkuuserInfo = {}  //这中写发回报错,因为计算属性的默认写法无法赋值
          this.$store.commit('setUserInfo', {})
          // 返回首页 home页面
          this.$router.push({
            path: '/home'
          })
        })
        .catch(() => {
          // 取消执行的回调
          console.log('我就不退出')
        })
    }
  }
}
</script>

<style lang="less">
.van-row {
  padding: 20px 0;
  border-bottom: 1px solid #ccc;
  .van-col {
    text-align: center;
    font-size: 12px;
    .van-icon {
      font-size: 25px;
    }
    span {
      display: block;
    }
  }
}
.user-container {
  .info-box {
    height: 100px;
    background-color: #3296fa;
    display: flex;
    padding-left: 18px;
    // 从 弹性布局 左边开始
    justify-content: flex-start;
    align-items: center;
    .my-image {
      width: 60px;
      height: 60px;
      margin-right: 5px;
    }
    .name {
      color: white;
      font-size: 15px;
      font-weight: normal;
    }
  }
}
</style>
